The invention relates to the field of computer software, and specifically to providing interfaces between software applications. Software applications are used by businesses to perform a variety of different tasks. Often, businesses have one or more proprietary software applications to store, process, and retrieve data. Client applications can access these software applications and their data using proprietary application programming interfaces (APIs) and messaging.
Applications typically communicate data with clients using one of two types of synchrony: synchronous or asynchronous. In synchronous applications, data is processed in line with client requests. Applications receive data processing requests from client applications and attempt to process them as soon as possible. Any data processing results are typically returned to the clients as soon as they are available. While its data processing requests are pending, the client typically enters a blocked or wait state. In asynchronous applications, data processing requested are queued or otherwise scheduled for processing at a later time. For example, an asynchronous application may queue all of the client requests received during a business day and begin processing these requests at night. A typical asynchronous application returns a token to a client application in response to a client request. The client application can then present this token to the asynchronous application at a later time to retrieve the data processing results.
Web services have evolved to standardize the interfaces for accessing these applications and to integrate their data. Web services applications incorporate a variety of different technologies to achieve these goals, such as XML for describing data; WSDL for describing web services application interfaces; SOAP for communicating with web services applications; and UDDI for locating web services applications. Although web services applications can be standalone applications tailored to use these web services technologies, it is often desirable to integrate older, or legacy, applications into web services systems. One way of accomplishing this is to provide a web services layer that translates an application's proprietary API to a web services interface capable of being used by any web services client application.
One difficulty with integrating applications with a web services layer is that applications may be synchronous or asynchronous. As a result, the web services layer must be able to integrate with either type of application. Furthermore, web services applications must be able to integrate two or more different applications having different types of synchrony. Additionally, web services clients may require a different type of synchrony than that provided by the underlying application. However, to maintain compatibility, a web services system may be required to maintain an application's original API for older client applications. Prior web services layers merely mirrored the underlying application API and thus cannot change the synchrony of an application's interface, cannot readily integrate applications having different types of synchrony, and cannot provide multiple application interfaces with different types of synchrony for applications only having one type of synchrony.
It is therefore desirable for a system and method to enable a web services layer to interface with both synchronous and asynchronous applications. It is further desirable for the web services system to provide either synchronous and/or asynchronous web services interfaces to client applications regardless of the type of synchrony required of the underlying application. It is also desirable for the web services system to allow synchronous and asynchronous web services interfaces to be easily created or modified for either type of underlying application programming interface. Additionally, it is desirable for the web services layer to efficiently convert client requests between interfaces with different types of synchrony.